core: replay exact point absence counterfactual - #472
Conversation
WalkthroughВ ChangesReplay отсутствия point-occurrence
Estimated code review effort: 4 (Complex) | ~60 minutes Sequence Diagram(s)sequenceDiagram
participant Graph as CompiledAppearanceGraph
participant View as AppearanceEvaluationView
participant Certificate as SourceOverCertificateV1
participant Buffer as Replay steps buffer
Graph->>View: evaluate_admitted_into(graph_instance)
View->>View: validate graph ownership and capacity
View->>Certificate: compose counterfactual certificates
View->>Buffer: append Removed and Propagated steps
View-->>Graph: return PointOccurrenceAbsenceReplayV1
Possibly related issues
Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
|
@coderabbitai review |
✅ Action performedReview finished.
|
There was a problem hiding this comment.
Actionable comments posted: 4
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@crates/labcolors-core/src/appearance_replay_tests.rs`:
- Line 166: Уточните проверку границы в тесте вокруг вычислений с
product_denominator_shift и exact_sum_numerator, чтобы она была доказуемо
безопасна для сдвига backdrop в i128. Либо уменьшите предел denominator_shift до
безопасного значения, учитывающего разрядность backdrop и product_numerator,
либо добавьте комментарий с выводом, обосновывающим предел 120; примените то же
исправление к аналогичному участку строк 196–200.
- Around line 438-445: Configure the proptest containing
replay_matches_an_independent_encoded_srgb8_oracle to run exactly 2048 cases by
adding a local ProptestConfig::with_cases(2048) attribute adjacent to that test
block, without changing the test inputs or assertions.
In `@crates/labcolors-core/src/appearance.rs`:
- Line 1761: Добавьте комментарий непосредственно перед безрефутабельным let в
обработчике PointOccurrenceAbsenceReleaseV1, объясняющий, что это намеренный
guard на исчерпаемость: появление нового варианта enum должно вызвать ошибку
компиляции в этом месте. Не изменяйте поведение проверки и не описывайте лишь
действие оператора.
- Around line 1407-1425: Зафиксируйте у поля steps структуры
PointOccurrenceAbsenceReplayV1 явный инвариант: срез всегда непуст и создаётся
только компилятором с корневым шагом. Свяжите это обоснование с методами first и
last, сохранив их текущее поведение; не добавляйте новые конструкторы или лишнюю
обработку.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: 82e1d37f-c127-4974-b74a-6b900c561c34
📒 Files selected for processing (5)
crates/labcolors-core/contracts/point-support-reference-surplus-q55-bps-proof-v1.jsoncrates/labcolors-core/src/appearance.rscrates/labcolors-core/src/appearance_replay_tests.rscrates/labcolors-core/src/lib.rsscripts/verify_point_support_surplus.py
Суть
Вертикальный срез O1a-B добавляет точный appearance-only контрфакт отсутствия одной point-occurrence:
Emptyтогда и только тогда, когда итоговые encoded-sRGB8 bytes совпали, иначеSingletonс нормальным видимым цветом;Границы
Срез не расширяет public API,
Program,Session, renderer или certificate binding. Client IDs остаются opaque; recipe-роли и клиентская семантика в физику не добавлены.Emptyничего не утверждает о sibling terminal roots и не является положительным quality/cleanliness witness.Проверка
2^11property cases;python3 scripts/verify_point_support_surplus.py— PASS; canonical source capsule и 43 negative controls сохранены.Независимый Claude Review подтвердил математику replay и обнаружил недоговорённый root scope; замечание исправлено fan-out тестом и точным контрактом. CodeRabbit review исправляется на exact head; merge только после повторного GREEN и закрытия всех доказанных threads.